//代理yield的return值会做为yield*generator的返回值，并会执行到下一个yield停止
function* run(){
  console.log('setp in child generator');
  return 'child over';
  var b = yield 'running';
  console.log(b);
  console.log('setp out child generator');
}
var runGenerator = run();
function* start(){
  //next()
  var a = yield 'start';
  //next(22)
  console.log(a);
  var childValue = yield *runGenerator;
  console.log('childValue->'+childValue);
  var c = yield 'end';
  //next(333)
  console.log(c);
  return 'over';
}
var it = start();
console.log(it.next()); // {value: 'start', done: false}
console.log(it.next(22)); // 22 setip in child generator childValue->child over {value: 'end',done: false}
console.log(it.next(333)); // 333 {value: 'over',done: true}
